import request from '@/utils/request'

// 查询产品列表
export function listProducts(query) {
  // 由于后端使用startPage()方法获取分页参数，必须以固定方式传递
  // 若依后端的startPage()使用pageNum和pageSize作为参数名称
  const pageNum = parseInt(query.pageNum) || 1;
  const pageSize = parseInt(query.pageSize) || 10;
  
  console.log("API方法收到分页参数: pageNum=" + pageNum + ", pageSize=" + pageSize);
  
  // 构建API请求参数
  const params = { ...query };
  
  // 处理模糊搜索参数
  if (query.product_name) {
    console.log("处理模糊搜索参数:", {
      product_name: query.product_name,
    });
  }
  
  // 处理产品类型参数
  if (query.product_type !== undefined) {
    console.log("使用供应商等级过滤:", query.product_type);
  }
  
  
  
  // 移除可能导致问题的参数
  delete params.pageNum;
  delete params.pageSize;
  
  console.log("API方法构建的请求参数:", JSON.stringify(params));
  
  // 使用若依框架的正确参数名称
  // 使用URL参数方式传递分页参数，避免与请求体冲突
  return request({
    url: '/ldzl-basic/pro/list',
    method: 'post',
    // 必须添加params参数，而不是放在data中，因为startPage()会从params中获取分页信息
    params: {
      pageNum: pageNum,
      pageSize: pageSize
    },
    // 业务数据保持在body中
    data: params
  })
}



// 新增产品
export function addProduct(data) {
  return request({
    url: '/ldzl-basic/pro',
    method: 'post',
    data: data
  })
}

// 修改产品
export function updateProduct(data) {
  return request({
    url: '/ldzl-basic/pro',
    method: 'put',
    data: data
  })
}

// 删除产品
export function delProduct(productId) {
  return request({
    url: '/ldzl-basic/pro/dp/' + productId,
    method: 'put'
  })
}

// 导出产品
export function exportProduct(query) {
  return request({
    url: '/ldzl-basic/pro/export',
    method: 'get',
    params: query
  })
}

// 根据产品ID查询BOM列表
export function listBomsByProductId(productId) {
  return request({
    url: '/ldzl-basic/bmd/list',
    method: 'post',
    data: { product_id: productId }
  })
}

// 根据BOM ID查询BOM详情列表
export function getBomDetailList(bomId) {
  return request({
    url: '/ldzl-basic/bmd/list',
    method: 'post',
    data: { bom_id: bomId }
  })
}

// 根据用户后端逻辑，调用/find接口获取BOM详情
export function findBomDetails(bomId) {
  return request({
    url: '/ldzl-basic/bmd/find',
    method: 'post',
    data: { bom_id: bomId }
  })
} 

// 上传产品图片
export function uploadAvatar(data) {
  return request({
    url: '/ldzl-basic/pro/avatar',
    method: 'post',
    headers: {
      'Content-Type': undefined // 让浏览器自动设置正确的Content-Type和boundary
    },
    data: data,
    timeout: 30000 // 增加超时时间，文件上传可能需要更长时间
  })
}

// 批量删除产品
export function delSuppliers(ids) {
  return request({
    url: '/ldzl-basic/pro/batch/' + ids,
    method: 'put'
  })
}

// 查询没有与bom关联的产品信息
export function listProducts1(query) {
  // 由于后端使用startPage()方法获取分页参数，必须以固定方式传递
  // 若依后端的startPage()使用pageNum和pageSize作为参数名称
  const pageNum = parseInt(query.pageNum) || 1;
  const pageSize = parseInt(query.pageSize) || 10;
  
  console.log("API方法收到分页参数: pageNum=" + pageNum + ", pageSize=" + pageSize);
  
  // 构建API请求参数
  const params = { ...query };
  
  // 处理模糊搜索参数
  if (query.product_name) {
    console.log("处理模糊搜索参数:", {
      product_name: query.product_name,
    });
  }
  
  
  
  
  
  // 移除可能导致问题的参数
  delete params.pageNum;
  delete params.pageSize;
  
  console.log("API方法构建的请求参数:", JSON.stringify(params));
  
  // 使用若依框架的正确参数名称
  // 使用URL参数方式传递分页参数，避免与请求体冲突
  return request({
    url: '/ldzl-basic/pro/list1',
    method: 'post',
    // 必须添加params参数，而不是放在data中，因为startPage()会从params中获取分页信息
    params: {
      pageNum: pageNum,
      pageSize: pageSize
    },
    // 业务数据保持在body中
    data: params
  })
}


